\documentclass[10pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}	
\usepackage{graphicx}
\setcounter{secnumdepth}{3}
\usepackage[margin=3cm]{geometry}
\date{}
\author{}
\title{Spørgsmål 4}
\subtitle{Brugen af nøgler i en Relationel DB herunder: Primary Key og Foreign Key samt Super Key og Candidate Key}

\begin{document}
\maketitle

\section{Typen af Nøgler}
\subsection{Konceptuelle nøgler}
Alle konceptuelle nøgler er stærkt afhængig af problemdomænet 
\begin{itemize}
\item \textbf{Supernøgle}\\
Supernøglen er grundtypen af alle nøgler, den kan udpege en enkelt række entydigt(determinant), og kan bestå af alle kombinationer af attributter i en tabel.
Kan godt være f.eks. en persons fulde navn, sålænge dette kun optræder et enkelt sted i tabellen.
\item \textbf{Kandidatnøgle}\\
En kandidatnøgle er en supernøgle der består af det minimale set af attributter, og stadig kan udpege en enkelt række(determinant).
\end{itemize}

\subsection{Konkrete Nøgler}
\begin{itemize}
\item \textbf{Primærnøgle}\\
En unik attribut der entydigt udpeger en række i en tabel(determinant). 
Der er max én primær nøgle per tabel, og denne kan refereres til at en fremmed nøgle
\item \textbf{Fremmednøgle}\\
En fremmednøgle er en reference til en anden tabels primærnøgle - benyttes til at referere til andre tabeller.
\end{itemize}

\subsection{Andre Nøgler}
\begin{itemize}
\item \textbf{Surrogatnøgle}\\
En kunstig nøgle der ikke stammer fra problemdomænet(f.eks. index)
\item \textbf{Sammensat nøgle}\\
En primær nøgle sammensat af flere attributter.
\end{itemize}

Eksempel: \textbf{FK} |peger på| \textbf{PK} |valgt fra| \textbf{CK} |er en| \textbf{SK}

\section{Brugen Af Nøgler}
Eksempel på typisk brug af nøgler i en relationel database:
Tabellen \textit{"Personer"} indeholder nogle informationer om forskellige personer, der i blandt attributten \textit{"PersonID"}, som er tabellens primærnøgle.
Tabellen \textit{"Ordrer"} indeholder information om forskellige ordrer, og hvilken person denne ordrer tilhører. 
Tabellen indeholder sin egen primærnøgle \textit{"OrdreID"}, og en fremmednøgle \textit{"PersonID"}, som er en reference til netop én person i \textit{"Personer"} tabellen.
Denne relation er en "en til mange" relation, en person til mange ordrer.
Det er nu muligt at skrive en SQL statement der returner alle ordrer for en person med ID'et 12345:\\
\textbf{SELECT} Personer.FullName Ordrer.OrdreID \textbf{FROM} Personer  \\
\textbf{JOIN} Ordrer \textbf{ON} Personer.PersonID=Ordrer.PersonID \textbf{WHERE} PersonID = 12345

\end{document}